<?php

require_once('utils.php');

define('SERVER_NAME'					,'www.mkinengue.com');

define('WIDTH_MAX'						,300);
define('HEIGHT_MAX'						,300);
define('WIDTH_MIN'						,200);
define('HEIGHT_MIN'						,200);
define('PERCENT'						,0.1);
define('NOM_FICHIER'					,'NOM_FICHIER');
define('EXTENSION'						,'EXTENSION');
define('EXTENSION_REF'					,'.jpeg');
define('INDICE_QUALITE_IMAGE'			,99);
define('UPLOAD_FILES_INPUT'				,'upload_files');
define('UPLOAD_PHOTOS_INPUT_PREFIX'		,'upload_photo');
define('LOGS_FOLDER'					,$_SERVER['DOCUMENT_ROOT'] . '/logs');
define('FOLDER_FILES'					,$_SERVER['DOCUMENT_ROOT'] . '/uploaded_files/');
define('DOSSIER_PHOTOS_UPLOADED' 		,$_SERVER['DOCUMENT_ROOT'] . '/uploaded_photos/');
define('DOSSIER_PHOTOS' 				,$_SERVER['DOCUMENT_ROOT'] . '/photos/');
define('DOSSIER_VIDEOS_UPLOADED' 		,$_SERVER['DOCUMENT_ROOT'] . '/uploaded_videos/');
define('DOSSIER_VIDEOS' 				,$_SERVER['DOCUMENT_ROOT'] . '/videos/');
define('TAILLE_MAX_VIDEO_OCTET'			,400000000);//400Mo  400000000
define('PHP_INI_MAX_INPUT_TIME_SEC'		,3600);//1200 secondes
define('TIME_LIMIT_SEC'					,3600);//1200 secondes

define('URI_ENVOI_MAIL'					,'http://' . $_SERVER['HTTP_HOST'] . '/wedding/%uriAlias%/%idTabEnvoiMail%');

define('URI_PHOTOS'						,'/wedding/%uriAlias%/%idTabConsultPhoto%');
define('NB_COLONNES'					,3);
define('NB_PHOTOS_PAR_PAGE'				,6);

define('COOKIE_PHOTOS'					,'__PHOTOS_MARIAGE__');
define('COOKIE_PHOTOS_LIFE_TIME_SEC'	,180);
define('WIDTH_VIEW'						,'300px');
define('HEIGHT_VIEW'					,'200px');

define('ENVOI_PHOTOS_WINDOW_OPTIONS'	,'directories=no;location=no;scrollbars=yes;status=yes;directories=no,width=800;height=200');
	
//Initialisation des constantes utiles pour la page d'upload de photos
define('LOGIN'							,'Lynda_Marcel');
define('PASSWORD'						,'mariagelyndamarcel');
define('BOURRAGE'						,'SHA256_CHECKSUM');
define('NB_PHOTOS_UPLOAD'				,6);
define('COOKIE_UPLOAD_PHOTOS'			,'__UPLOAD_PHOTOS__');
define('COOKIE_UPLOAD_LIFE_TIME_MIN'	,60);
// define('URI_UPLOAD'						,'http://' . $_SERVER['HTTP_HOST'] . '/wedding/%uriAlias%/%idTabUploadPhoto%');
define('URI_UPLOAD'						,'/wedding/%uriAlias%/%idTabUploadPhoto%');
		
//Paramètres d'affichage
$erreurPhoto = '';
$colorEnvoiPhoto = '';

$erreurFile = '';
$colorEnvoiFile = '';

//Comme il s'agit de photos, on ne prend que des extensions d'images.
$extPhotosAdmises = array('png', 'gif', 'jpg', 'jpeg');

//Comme il s'agit de photos, on ne prend que des extensions de vidéos.
$extVideosAdmises = array ('mov', 'avi', 'mwv', 'dv', 'mpg', 'mpeg', 'flv', 'divx', 'mp4');


@ini_set('memory_limit','128M');

/**
 * Retourne l'uri d'envoi de mail aux invités
 * @param int $idMariage
 * @return string (uri)
 */
function getUriEnvoiMail($idMariage) {
	$infosMariage = getInfosMariage($idMariage);
	$uriEnvoiMail = str_replace(array('%uriAlias%', '%idTabEnvoiMail%'), array($infosMariage[KEY_URI_ALIAS], tabGetIdByCode('TAB_ENVOI_MAIL_INVITES')), URI_ENVOI_MAIL);
	return $uriEnvoiMail;
}

/**
 * Retourne l'uri d'envoi de mail aux invités
 * @param int $idMariage
 * @return string (uri)
 */
function getUriPhotos($idMariage) {
	$infosMariage = getInfosMariage($idMariage);
	$uriConsultPhoto = str_replace(array('%uriAlias%', '%idTabConsultPhoto%'), array($infosMariage[KEY_URI_ALIAS], tabGetIdByCode('TAB_PHOTO_CONSULTATION')), URI_PHOTOS);
	return $uriConsultPhoto;
}

/**
 * Retourne l'uri d'envoi de mail aux invités
 * @param int $idMariage
 * @return string (uri)
 */
function getUriUploadPhotos($idMariage) {
	$infosMariage = getInfosMariage($idMariage);
	$uriUploadPhoto = str_replace(array('%uriAlias%', '%idTabUploadPhoto%'), array($infosMariage[KEY_URI_ALIAS], tabGetIdByCode('TAB_PHOTO_UPLOAD')), URI_UPLOAD);
	return $uriUploadPhoto;
}


/**
 * @param $resourceFile le fichier ouvert dans lequel écrire
 * @param $aEcrire ce que l'on doit écrire dans un fichier
 * @return le résultat de l'écriture dans le fichier
 */
function ecrireFichier($resourceFile, $aEcrire) {
	return fwrite($resourceFile, '['.date('d-M-Y H:i:s').'] : '.$aEcrire."\r\n" );
}

/**
 * On essaie de copier les fichiers contenus dans Uploaded qui n'auraient pas encore été copiés en .jpeg dans le dossier de photos
 */
function majDossierPhotos() {
	global $extPhotosAdmises;
	//On essaie d'ouvrir le dossier Uploaded
	$photosDir = @opendir(DOSSIER_PHOTOS_UPLOADED);
	if ($photosDir !== false) {
		while (($file = readdir($photosDir)) !== false) {
			if (is_dir(DOSSIER_PHOTOS_UPLOADED.'/'.$file)) {
				//Il s'agit d'un dossier, on passe au suivant
				continue;
			}
			
			$parsedNomFichier = parseNomFichier($file);
			
			// On récupère la partie de la chaine à partir du dernier . pour connaître l'extension.
			if (!in_array(strtolower($parsedNomFichier[EXTENSION]), $extPhotosAdmises)) {
				//Ce n'est pas une photo, on passe au suivant
				continue;
			}
			
			//On vérifie si le fichier existe. S'il n'existe pas, on le copie en .jpeg
			if (!file_exists(DOSSIER_PHOTOS.'/'.$parsedNomFichier[NOM_FICHIER].EXTENSION_REF)) {
				resizeAndCopyImage(DOSSIER_PHOTOS_UPLOADED.'/', DOSSIER_PHOTOS.'/', $file, PERCENT);
			}
		}
	}
}

/**
* Renomme le fichier si nécessaire en supprimant les caractères non autorisés
* et vérifie que le dossier destination ne contient pas un fichier d'un tel nom
* @return le nom du fichier renommé
*/
function renomme($dossier, $nomFichier) {
	//On formate le nom du fichier ici en supprimant les accents et en remplaçant
	//tout ce qui n'est pas une lettre ou un chiffre par un trait d'union
	$fileName = accentCleaner($nomFichier);
	 $fileName = preg_replace
		('/([^.a-z0-9]+)/i'
		,'_'
		,$fileName
		);
		
	$parsedNomFichier = parseNomFichier($fileName);
		
	//On récupère l'extension
	$extension = $parsedNomFichier[EXTENSION];
	
	//On récupère le nom sans extension
	$nomFileSansExt = $parsedNomFichier[NOM_FICHIER];
	
	$i=0;
	while (file_exists($dossier.$fileName)) {
		$nomFileSansExt .= '_'.$i;
		$fileName = $nomFileSansExt.'.'.$extension;
		$i++;
	}
	
	//OIn retourne le nom du fichier à utiliser
	return $fileName;
}

/**
 * Retourne un tableau array(NOM_FICHIER => $nomFileSansExt, EXTENSION => $extension) contenant
 * le nom du fichier sans l'extension et l'extension associée
 * @param $filename le nom du fichier avec extension
 * @return array
 */
function parseNomFichier($filename) {
	//On récupère l'extension
	$fileNameExploded = explode('.', $filename);
	$extension = $fileNameExploded[count($fileNameExploded) - 1];
	//$extension = strrchr($fileName, '.');
	
	//On récupère le nom sans extension
	$nomFileSansExt = '';
	for ($i=0; $i < count($fileNameExploded) - 1; $i++) {
		if ($i > 0) {
			//On remet le séparateur (.) ayant servi à faire le explode
			$nomFileSansExt .= '.';
		}
		$nomFileSansExt .= $fileNameExploded[$i];
	}
	
	return array
			(NOM_FICHIER 	=> $nomFileSansExt
			,EXTENSION 		=> $extension
			);
}

/**
 * Redimensionne et copie l'image
 * Retourne true si ok et false sinon
 * @param $dossierSrc nom du dossier source se terminant par /
 * @param $dossierDst nom du dossier destination se terminant par /
 * @param $filename nom du fichier avec l'extension
 * @param $percent pourcentage pour redimensionner l'image
 * @return true ok / false ko
 */
function resizeAndCopyImage($dossierSrc, $dossierDst, $filename, $percent=PERCENT) {
	// On récupère la taille de l'image originale
	list($width, $height) = getimagesize($dossierSrc.$filename);

	// Load
	$percent = calculerPourcentage($width, $height);
	$newWidth = $width * $percent;
	$newHeight = $height * $percent;
	$thumb = imagecreatetruecolor($newWidth, $newHeight);
	$parsedFilename = parseNomFichier($filename);
	if (strtolower($parsedFilename[EXTENSION]) === 'png') {
		$source = imagecreatefrompng($dossierSrc.$filename);
	} elseif (strtolower($parsedFilename[EXTENSION]) === 'gif') {
		$source = imagecreatefromgif($dossierSrc.$filename);
	} elseif ($parsedFilename[EXTENSION] === 'JPEG' || $parsedFilename[EXTENSION] === 'JPG') {
		$source = imagecreatefromJPEG($dossierSrc.$filename);
	} else {
		$source = imagecreatefromjpeg($dossierSrc.$filename);
	}

	// Resize
	imagecopyresized($thumb, $source, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);

	// On sauvegarde l'image avec une bonne qualité au format jpeg en renommant si nécessaire pour pas écraser
	$nomFichierDst = $parsedFilename[NOM_FICHIER].EXTENSION_REF;
	$nomFichierDst = renomme($dossierDst, $nomFichierDst);
	$copied = imagejpeg($thumb, $dossierDst.$nomFichierDst, INDICE_QUALITE_IMAGE);
	
	// Free up memory
	imagedestroy($thumb);
	
	return $copied;
}

/**
 * Calcule le pourcentage à appliquer pour redimensionner
 * @param $width largeur à redimensionner
 * @param $height hauteur à redimensionner
 * @return pourcentage à appliquer
 */
function calculerPourcentage($width, $height) {
	if (($width >= WIDTH_MIN && $width <= WIDTH_MAX) || ($height >= HEIGHT_MIN && $height <= HEIGHT_MAX)) {
		//Une des coordonnées est comprise entre sa valeur min et sa valeur max autorisée, aucun redimensionnement nécessaire
		return 1;
	}
	
	//Sinon, on retourne le pourcentage de la coordonnée la plus grande avec priorité pour la largeur
	if ($width >= $height) {
		$widthCible = (WIDTH_MAX + WIDTH_MIN) / 2;
		$percent = $widthCible / $width;
	} else {
		$heightCible = (HEIGHT_MAX + HEIGHT_MIN) / 2;
		$percent = $heightCible / $height;
	}
	return $percent;
}
	
/**
 * Fonction de traitement des vidéos
 */
function traiterEnvoiVideo() {
	global $extVideosAdmises, $erreurFile, $colorEnvoiFile;
	
	if ($_SERVER['SERVER_ADDR'] !== SERVER_NAME) {
		//===================================
		//on fixe les variables de php.ini :
		//===================================
		$res_ini = @ini_set('MAX_INPUT_TIME', PHP_INI_MAX_INPUT_TIME_SEC);
		@set_time_limit(TIME_LIMIT_SEC);
	}
	
	//=====================================
	//initialisation des vars et tableaux
	//=====================================
	$traitable = false;
	$is_ext_ok = false;
	$path_ffmpeg = 'ffmpeg/ffmpeg';
	$taille = false;

	$source = $_FILES[UPLOAD_FILES_INPUT]['tmp_name'];
	$nom_fic = $_FILES[UPLOAD_FILES_INPUT]['name'];
	$size = filesize($_FILES[UPLOAD_FILES_INPUT]['tmp_name']);

	$nom_fic = renomme(DOSSIER_VIDEOS_UPLOADED, $nom_fic);
	$destination = DOSSIER_VIDEOS_UPLOADED.'/'.$nom_fic;  //dossier destination

	$parsedFilename = parseNomFichier($nom_fic);
	$nom_final = $parsedFilename[NOM_FICHIER];

	if ($size < TAILLE_MAX_VIDEO_OCTET) {
		//echo "<br />taille : $taille<br />size : $size<br />";
		$taille = true;
	} else {
		$erreurFile .= 'Taille supérieure à la limite autorisée! Taille limite : '.(TAILLE_MAX_VIDEO_OCTET / 1000000).'Mo; ';
		$erreurFile .= 'taille fichier : '.$size.'<br />';
		$colorEnvoiFile = 'red';
		$taille = false;
		return;
	}

	//=================================
	//initialisation des fichiers logs
	//=================================
	$nomlogerror = LOGS_FOLDER.'/logerror'.$nom_final.'.log';
	$nomlogconnect = LOGS_FOLDER.'/logconnect'.$nom_final.'.log';
	$logerrorpt = @fopen($nomlogerror, 'a+');
	$logconnectpt = @fopen($nomlogconnect, 'a+');

	if (is_writable($nomlogerror)) {
	  if (!$logerrorpt) {
		echo '<br />impossible d\'ouvrir le fichier logerror'.$nom_final.'.log<br />';
		return ;
	  }
	  else {
	   $res_write = ecrireFichier ($logerrorpt, "erreurs apparues lors de l'upload et du traitement :" );
	  }
	}
	else {
	  echo '<br />fichier non accessible<br />';
	}
	if (is_writable($nomlogconnect)) {
	  if (!$logconnectpt) {
		$res_write = ecrireFichier ($logerrorpt, "Impossible d'ouvrir $nomlogconnect");
		return;
	  }
	  else {
		if (!$res_write = ecrireFichier ($logconnectpt, "compte rendu de l'upload et du traitement de la vidéo")) {
		  $res_write = ecrireFichier ($logerrorpt, "\r\nImpossible d'ecrire dans $nomlogconnect");
		}
	  }
	}
	else {
	  $res_write = ecrireFichier ($logerrorpt, "fichier $nomlogconnect non accessible");
	}

	//=========================================
	//v�rification de l'existence de la vid�o
	//=========================================
	$nom_final_flv = renomme(DOSSIER_VIDEOS, $nom_final.'.flv');
	$parsedFilename = parseNomFichier($nom_final_flv);
	$nom_final = $parsedFilename[NOM_FICHIER];
	if (file_exists (DOSSIER_VIDEOS.'/'.$nom_final_flv)) {
		$towrite = "\r\nla vidéo $nom_fic a déjà été uploadée et traitée, arret de l'upload";
		$res_write = ecrireFichier ($logerrorpt, $towrite);
		$res_write = ecrireFichier ($logconnectpt, $towrite);
		return;
	}

	//==================
	//test de la vid�o
	//==================
	$extension = $parsedFilename[EXTENSION];
	$res_write = ecrireFichier ($logconnectpt, "dossier source : $source  ");
	$res_write = ecrireFichier ($logconnectpt, "nom du fichier : $nom_fic");
	$res_write = ecrireFichier ($logconnectpt, "nom du fichier destination : $destination");
	$res_write = ecrireFichier ($logconnectpt, "extension : $extension ");
	$res_write = ecrireFichier ($logconnectpt, "taille : $size");


	$implodeExt = implode(', ', $extVideosAdmises);
	if (!in_array(strtolower($extension), $extVideosAdmises)) {
		echo '<br />Attention, le fichier que vous venez de sélectionner n\'est pas une vidéo au format valide.<br />';
		echo "Les formats utilisables sont : $implodeExt merci de compresser votre vidéo au format voulu.<br />";
		$res_write = ecrireFichier ($logerrorpt, "\r\nformat vidéo $nom_final_flv non adapté, extension de la vidéo : $extension, upload arr�t� ");
	}
	else {
		$res_write = ecrireFichier ($logconnectpt, "\r\nextension de la vidéo ok, poursuite de l'upload ");
		if (!$taille) {
			$erreurFile .= 'Taille supérieure à la limite autorisée! Taille limite : '.(TAILLE_MAX_VIDEO_OCTET / 1000000).'Mo; ';
			$erreurFile .= 'taille fichier : '.$size.'<br />';
			$colorEnvoiFile = 'red';
		   echo '<br />Impossible de charger '.$nom_fic.', cette vidéo fait plus de '.(TAILLE_MAX_VIDEO_OCTET / 1000000).'Mo, merci de réduire la taille de votre vidéo<br /> ';
		   $res_write = ecrireFichier ($logerrorpt, "\r\nla taille de la vidéo $nom_fic est de $size et supérieure à ".(TAILLE_MAX_VIDEO_OCTET / 1000000)."Mo, arret de l'upload");
		   return;
		}
		else {
			$res_write = ecrireFichier ($logconnectpt, "\r\ntaille de la vidéo ok, poursuite de l'upload ");
			$is_ext_ok = true;
		}
	}


	//==================
	//Début de l'upload
	//==================
	if ($is_ext_ok) {
	   $res_write = ecrireFichier ($logconnectpt, "\r\ndebut de l'upload de la vidéo ");
	   $result = move_uploaded_file( $source, $destination);
	   $res_write = ecrireFichier ($logconnectpt, "\r\nrésultat de move_upload_file = $result");

	   $erreur = $_FILES[UPLOAD_FILES_INPUT]['error'];
	   if ($result === false) {
		  $res_write = ecrireFichier ($logerrorpt, 'erreur lors de l\'upload : ');
		  switch ($erreur) {
			  case 1: // UPLOAD_ERR_INI_SIZE
				   $res_write = ecrireFichier ($logerrorpt, 'UPLOAD_ERR_INI_SIZE');
				   echo 'Attention le fichier d&eacute;passe la taille autoris&eacute;e par le serveur<br />';
				   break;
			  case 2: //UPLOAD_ERR_FORM_SIZE
				   $res_write = ecrireFichier ($logerrorpt, 'UPLOAD_ERR_FORM_SIZE');
				   echo 'Attention le fichier d&eacute;passe la taille autoris&eacute;e par le formulaire<br />';
				   break;
			  case 3: //UPLOAD_ERR_PARTIAL
				   $res_write = ecrireFichier ($logerrorpt, 'UPLOAD_ERR_PARTIAL');
				   echo 'Attention, l\'upload du fichier a &eacute;t&eacute; interrompu<br />';
				   break;
			  case 4: // UPLOAD_ERR_NO_FILE
				   $res_write = ecrireFichier ($logerrorpt, 'UPLOAD_ERR_NO_FILE');
				   echo 'Attention, le fichier envoy&eacute; &agrave; une taille nulle<br />';
				   break;
		  }//switch ()
		  $erreurFile .= 'Erreur survenue lors de l\'upload du fichier '.$nom_fic.'. Veuillez recommencer s\'il vous plait<br />';
		  $colorEnvoiFile = 'red';
		  $res_write = ecrireFichier ($logconnectpt, "\r\nune erreur est survenue lors de l'upload de $nom_fic, consultez le log erreur");
		  return;
	   }
	   else {
		   $traitable = true;
		   $erreurFile .= 'Fichier '.$nom_fic.' upload&eacute; avec succ&egrave;s!<br />';
		   $colorEnvoiFile = 'green';
		   $res_write = ecrireFichier ($logconnectpt, "\r\nfichier upload&eacute;, d&eacute;but du traitement de la vid&eacute;o");
	   }
	}//if ()

	//===================================
	//Phase de traitement de la vidéo
	//===================================
	if ($traitable && $is_ext_ok) {
	   $res_write = ecrireFichier ($logconnectpt, "\r\ndebut du traitement de la vidéo");
	   $mod = chmod($destination, 0770);

	  $res_write = ecrireFichier ($logconnectpt, "\r\ninclusion du son par défaut");
	  $commande = "$path_ffmpeg -y -i $destination -t 00:00:40 -vcodec flv -s 350x250 -acodec mp3 ".DOSSIER_VIDEOS.'/'.$nom_final_flv;

	   $res_write = ecrireFichier ($logconnectpt, "\r\ncommande à exécuter : $commande ");
	   $res = system($commande, $res_var);
	   //$output = array();
	   //$res = exec($commande, $output, $res_var);

	   if ($res_var == 0) {
		  $res_write = ecrireFichier ($logconnectpt, "\r\nla vidéo $nom_fic a bien été traitée\r\ndébut de la suppression de la vidéo uploadée");
		  $erreurFile .= 'Le fichier a &eacute;t&eacute; bien converti et est d\'ores et d&eacute;j&agrave; visible sur la page de consultation de vid&eacute;os<br />';
		  $bool = unlink ($destination);
		  if ($bool) {
			 $res_write = ecrireFichier ($logconnectpt, "\r\n$destination supprimée avec succès");
		  }//if ()
		  else {
			  $res_write = ecrireFichier ($logerrorpt, "\r\n$destination non supprimée");
		  }//else
	   }//if ()
	   else {
			$erreurFile .= 'Fichier '.$nom_fic.' non converti pour visualisation! Il sera visible apr&egrave;s traitement manuel!<br />';
			$res_write = ecrireFichier ($logerrorpt, "\r\nerreur lors de l'encodage... vidéo $destination non supprimée");
			return;
	   }//else

	   $bool = unlink($nomlogerror);
	   if ($bool) {
		  $res_write = ecrireFichier ($logconnectpt, "\r\nle fichier $nomlogerror a été supprimé avec succès");
	   }//if ()
	}//if ()
}

/**
 * Traite l'envoi des photos
 */
function traiterEnvoiPhoto() {
	global $erreurPhoto, $colorEnvoiPhoto, $extPhotosAdmises;
	
	ini_set('gd.jpeg_ignore_warning', 1);
	if ($_SERVER['SERVER_ADDR'] !== SERVER_NAME) {
		//===================================
		//on fixe les variables de php.ini :
		//===================================
		$res_ini = @ini_set('MAX_INPUT_TIME', PHP_INI_MAX_INPUT_TIME_SEC);
		@set_time_limit(TIME_LIMIT_SEC);
	}

	$tousEnvoyes = true;
			
	for ($i=1; $i<=10; $i++) {
		if (trim($_FILES[UPLOAD_PHOTOS_INPUT_PREFIX.$i]['name']) === '') {
			continue;
		}
	
		//Le nom du fichier à charger
		$fileName = basename($_FILES[UPLOAD_PHOTOS_INPUT_PREFIX.$i]['name']);
		
		// Récupère la partie de la chaine à partir du dernier . pour connaître l'extension.
		$parsedFilename = parseNomFichier($fileName);
		$extension = $parsedFilename[EXTENSION];
		//Ensuite on teste
		if(!in_array(strtolower($extension), $extPhotosAdmises)) {
			//Si l'extension n'est pas dans le tableau
			$erreurPhoto .= 'Le fichier &agrave; uploader '. $fileName . ' n\'est pas un fichier de type png, gif, jpg ou jpeg';
			$tousEnvoyes = false;
			continue;
		}
		
		//La taille max en octets
		$tailleMax = intval($_POST['MAX_FILE_SIZE']);
		$taille = $_FILES[UPLOAD_PHOTOS_INPUT_PREFIX.$i]['size'];
		
		if($taille > $tailleMax) {
			$erreurPhoto .= 'Le fichier '. $fileName . ' est trop gros...';
			$tousEnvoyes = false;
		} else {
			//Le nom du fichier à charger
			$fileName = basename($_FILES[UPLOAD_PHOTOS_INPUT_PREFIX.$i]['name']);
			
			//On renomme le fichier si nécessaire
			$fileName = renomme(DOSSIER_PHOTOS_UPLOADED.'/', $fileName);
				
			//On essaie d'uploader le fichier
			if (move_uploaded_file($_FILES[UPLOAD_PHOTOS_INPUT_PREFIX.$i]['tmp_name'], DOSSIER_PHOTOS_UPLOADED .'/' . $fileName)) {
				//Upload effectué avec succès
				$erreurPhoto .= 'Fichier '. $fileName . ' upload&eacute; avec succ&egrave;s! ';
				$resized = resizeAndCopyImage(DOSSIER_PHOTOS_UPLOADED.'/', DOSSIER_PHOTOS.'/', $fileName, PERCENT);
				if (!$resized) {
					$erreurPhoto .= 'L\'image n\'a pas pu &ecirc;tre redimensionn&eacute;e, elle ne sera pas affich&eacute;e!';
				}
				$erreurPhoto .= '<br />';
			} else {
				//Erreur d'upload
				$erreurPhoto = 'Echec de l\'upload';
				switch ($_FILES[UPLOAD_PHOTOS_INPUT_PREFIX.$i]['error']) {
					case UPLOAD_ERR_INI_SIZE :
					case UPLOAD_ERR_FORM_SIZE :
						$erreurPhoto .= '<br />Le fichier '. $fileName . ' est trop gros!';
						break;
						
					case UPLOAD_ERR_PARTIAL :
						$erreurPhoto .= '<br />Le fichier '. $fileName . ' n\'a &eacute;t&eacute; upload&eacute; que partiellement...';
						break;
						
					case UPLOAD_ERR_NO_FILE :
						$erreurPhoto .= '<br />Le fichier '. $fileName . ' n\'a &eacute;t&eacute; upload&eacute;';
						break;
						
					default:
						break;
				}
				$tousEnvoyes = false;
			}
		}
	}
	
	if ($tousEnvoyes) {
		$colorEnvoiPhoto = 'green';
	} else {
		$colorEnvoiPhoto = 'red';
	}
}

/**
* Traite l'envoi de fichier
*/
function traiterEnvoiFichier() {
	global $erreurFile, $colorEnvoiFile, $extVideosAdmises;

	//Le nom du fichier à charger
	$fileName = basename($_FILES[UPLOAD_FILES_INPUT]['name']);
	
	//La taille max en octets
	$tailleMax = intval($_POST['MAX_FILE_SIZE']);
	$taille = filesize($_FILES[UPLOAD_FILES_INPUT]['tmp_name']);
	
	if($taille > $tailleMax) {
		 $erreurFile = 'Le fichier est trop gros...';
		 $colorEnvoiFile = 'red';
	} else {
		//On renomme le fichier si nécessaire
		$fileName = renomme(FOLDER_FILES, $fileName);
		
		// Récupère la partie de la chaine à partir du dernier . pour connaître l'extension.
		$parsedFilename = parseNomFichier($fileName);
		$extension = $parsedFilename[EXTENSION];
		//Ensuite on teste
		if(in_array(strtolower($extension), $extVideosAdmises)) {
			//Si l'extension est une extension d'un fichier vidéo, on traite le fichier comme une vidéo
			traiterEnvoiVideo();
		} else {
			//On essaie d'uploader le fichier
			if (move_uploaded_file($_FILES[UPLOAD_FILES_INPUT]['tmp_name'], FOLDER_FILES . $fileName)) {
				//Upload effectué avec succès
				$erreurFile = 'Fichier upload&eacute; avec succ&egrave;s!';
				$colorEnvoiFile = 'green';
			} else {
				//Erreur d'upload
				$erreurFile = 'Echec de l\'upload';
				switch ($_FILES[UPLOAD_FILES_INPUT]['error']) {
					case UPLOAD_ERR_INI_SIZE :
					case UPLOAD_ERR_FORM_SIZE :
						$erreurPhoto .= '<br />Le fichier '. $fileName . ' est trop gros!';
						break;
						
					case UPLOAD_ERR_PARTIAL :
						$erreurPhoto .= '<br />Le fichier '. $fileName . ' n\'a &eacute;t&eacute; upload&eacute; que partiellement...';
						break;
						
					case UPLOAD_ERR_NO_FILE :
						$erreurPhoto .= '<br />Le fichier '. $fileName . ' n\'a &eacute;t&eacute; upload&eacute;';
						break;
						
					default:
						break;
				}
				$colorEnvoiFile = 'red';
			}
		}
	}
}
